﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using RRHH.BusinessLogic;
using RRHH.Entities;

namespace SOAPService
{
    public class RRHH : IRRHHService
    {
        private BLPersonal _BLPersonal= null;
        private BLContrato _BLContrato = null;
       // private BLCargo _BLCargo = null;
        private BLTipoContrato _BLTipoContrato = null;
        private BLEstadoContrato _BLEstadoContrato = null;
        // INI CAMBIOS BENITES
        private BLEstadoCivil _BLEstCivil = null;
        private BLUbigeo _blUbigeo = null;
        private BLAcceso _blUsuario = null;
        // FIN CAMBIOS BENITES
       

        public BEPersonal CrearPersonal(BEPersonal personal)
        {
            _BLPersonal = new BLPersonal();
            return _BLPersonal.Create(personal);
        }

        public bool ModificarPersonal(int personalID, string nombre, string apellidoPaterno, string apellidoMaterno)
        {
            _BLPersonal= new BLPersonal();
            BEPersonal newPersonal = new BEPersonal();

            newPersonal = _BLPersonal.Get(personalID);

            newPersonal.NOMBRESEMPLEADO = nombre;
            newPersonal.APEPATERNOEMPLEADO = apellidoPaterno;
            newPersonal.APEMATERNOEMPLEADO = apellidoMaterno;

            return _BLPersonal.Update(newPersonal);
        }

        public bool EliminarPersonal(int personalID)
        {
            _BLPersonal = new BLPersonal();
            return _BLPersonal.Delete(personalID);
        }

        public List<BEPersonal> ListarPersonal()
        {
            _BLPersonal = new BLPersonal();
            return _BLPersonal.List().ToList();
        }

        public BEPersonal ObtenerPersonal(int personalID)
        {
            _BLPersonal = new BLPersonal();
            return _BLPersonal.Get(personalID);
        }

        public List<String> ConsultarContratosAVencer()
        {

            return null;
        }

        public BEPersonal Obtener_x_ID(int personalID)
        {
            _BLPersonal = new BLPersonal();
            return _BLPersonal.Obtener_x_ID(personalID);
        }

        /****************************************************************************************
                                                CONTRATO
         ********************************************************************************************/

         public BEContrato CrearContrato(BEContrato contrato)
        {

            _BLContrato = new BLContrato();
            return _BLContrato.Create(contrato);
        }

         public List<BEContrato> ListarContrato(int personalID)
        {

            _BLContrato = new BLContrato();
            return _BLContrato.List(personalID).ToList();
        }


        // INI CAMBIOS BENITES
        public List<BEEstCivil> ListarEstadosCivil()
        {
            _BLEstCivil = new BLEstadoCivil();
            return _BLEstCivil.List();
        }

        public List<BEDepartamento> ListDepartamento()
        {
            _blUbigeo = new BLUbigeo();
            return _blUbigeo.ListDepartamento();
        }

        public List<BEProvincia> ListProvincia(int idDep)
        {
            _blUbigeo = new BLUbigeo();
            return _blUbigeo.ListProvincia(idDep);
        }

        public List<BEDistrito> ListDistrito(int idDep, int idProv)
        {
            _blUbigeo = new BLUbigeo();
            return _blUbigeo.ListDistrito(idDep, idProv);
        }
        // FIN CAMBIOS BENITES


        /**************************************************************************
         * CARLOS CALDERON
         * ************************************************************************/
        BLMaestroPersonal _BLMAestroPersonal = new BLMaestroPersonal();

        public List<BEMaestroPersonal> ListarIngresosPersonal()
        {
            return _BLMAestroPersonal.ListarIngresosPersonal();
        }

        public BEIngresoTRegistro EnvioIngresoTRegistro(int personalID, string codigoEmpleado)
        {
            return _BLMAestroPersonal.EnvioIngresoTRegistro(personalID, codigoEmpleado);
        }

        public int ActualizarMPTRegistro(BEMaestroPersonal _BEMaestroPersonal)
        {
            return _BLMAestroPersonal.ActualizarEstadoMPTRegistro(_BEMaestroPersonal);
        }

        /************************************************************************************************
        *                          J. SALCEDO MAESTROPERSONAL
        * **********************************************************************************************/

        public List<BEMaestroPersonal> ListarMaestroPersonalXIDPersonal(int personalID)
        {
            return _BLMAestroPersonal.ListarMaestroPersonalXIDPersonal(personalID);
        }


        public BEMaestroPersonal BuscarMaestroPersonalXID(int personalID, string codigoEmpleado)
        {
            return _BLMAestroPersonal.BuscarMaestroPersonalXID(personalID, codigoEmpleado);
        }


        public int RegistrarMaestroPersonal(BEMaestroPersonal _BEMaestroPersonal)
        {
            return _BLMAestroPersonal.RegistrarMaestroPersonal(_BEMaestroPersonal);
        }


        public int ModificarMaestroPersonal(BEMaestroPersonal _BEMaestroPersonal)
        {
            return _BLMAestroPersonal.ModificarMaestroPersonal(_BEMaestroPersonal);
        }


        /****************************************************************************************
       *                                  MAESTRO PERSONAL   
       * ****************************************************************************************/
        public List<BEBanco> ListarBanco()
        {
            BLBanco _BLBanco = new BLBanco();
            return _BLBanco.ListarBanco();
        }

        public List<BECargo> ListarCargo()
        {
            BLCargo _BLCargo = new BLCargo();
            return _BLCargo.ListarCargo();
        }

        public List<BECatalogo> ListarCatalogo(BECatalogo _OBECatalogo)
        {
            BECatalogo _BECatalogo = new BECatalogo();
            _BECatalogo.idDominio = 11;

            BLCatalogo _BLCatalogo = new BLCatalogo();

            return _BLCatalogo.ListarCatalogo(_BECatalogo);
        }

        public List<BECategoriaEmpleado> ListarCategoriaEmpleado()
        {
            BLCategoriaEmpleado _BLCategoriaEmpleado = new BLCategoriaEmpleado();
            return _BLCategoriaEmpleado.ListarCategoriaEmpleado();
        }

        public List<BECentroCosto> ListarCentroCosto()
        {
            BLCentroCosto _BLCentroCosto = new BLCentroCosto();
            return _BLCentroCosto.ListarCentroCosto();
        }

        public List<BEClasePlanilla> ListarClasePlanilla()
        {
            BLClasePlanilla _BLClasePlanilla = new BLClasePlanilla();
            return _BLClasePlanilla.ListarClasePlanilla();
        }

        public List<BEEmpresa> ListarEmpresa()
        {
            BLEmpresa _BLEmpresa = new BLEmpresa();
            return _BLEmpresa.ListarEmpresa();
        }

        public List<BEEps> ListarEPS()
        {
            BLEps _BLEps = new BLEps();
            return _BLEps.ListarEPS();
        }
        
        /****************************************************************************************
                                                TIPO CONTRATO
         ********************************************************************************************/
        public int ActualizarEstadoMPTRegistro(BEMaestroPersonal _BEMaestroPersonal) {
            return _BLMAestroPersonal.ActualizarEstadoMPTRegistro(_BEMaestroPersonal);
        }

        public List<BETipoContrato> ListarTipoContrato()
        {
            _BLTipoContrato = new BLTipoContrato();
            return _BLTipoContrato.ListarTipoContrato();
        }

        /****************************************************************************************
                                            ESTADO CONTRATO
     ********************************************************************************************/

        public List<BEEstadoContrato> ListarEstadoContrato()
        {
            _BLEstadoContrato = new BLEstadoContrato();
            return _BLEstadoContrato.ListarEstadoContrato();
        }

        
        public BEAcceso ValidarUsuario(BEAcceso _usu, ref int cantidad)
        {
            _blUsuario = new BLAcceso();
            return _blUsuario.ValidarUsuario(_usu, ref cantidad);
        }


        public List<BEContrato> GestContratosVencidos()
        {
            _BLContrato = new BLContrato();
            return _BLContrato.GestContratosVencidos();
        }
    }
}
